Skip to content

MPT-20430: add endpoints and e2e tests for spotlight queries#321

Merged
d3rky merged 1 commit into
mainfrom
MPT-20430-add-endpoints-and-e-2-e-tests-for-spotlight-queries
Apr 24, 2026
Merged

MPT-20430: add endpoints and e2e tests for spotlight queries#321
d3rky merged 1 commit into
mainfrom
MPT-20430-add-endpoints-and-e-2-e-tests-for-spotlight-queries

Conversation

@robcsegal

@robcsegal robcsegal commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

🤖 AI-generated PR — Please review carefully.

What changed

  • Added mpt_api_client/resources/spotlight/queries.py with a dedicated queries resource module covering sync and async endpoint operations.
  • Extended mpt_api_client/resources/spotlight/spotlight.py to expose the new queries resource.
  • Added e2e tests for query endpoints under tests/e2e/spotlight/query/ (sync and async).
  • Renamed test_async_spotlight.pytest_async_object.py and test_sync_spotlight.pytest_sync_object.py for naming consistency with the object-level scope.
  • Added unit tests for the new queries resource in tests/unit/resources/spotlight/test_queries.py.
  • Updated existing spotlight unit tests in tests/unit/resources/spotlight/test_spotlight.py to cover the new surface.
  • Updated e2e_config.test.json with required query test configuration.

Closes MPT-20430

  • Added SpotlightQuery model and query service classes (SpotlightQueriesService and AsyncSpotlightQueriesService) for the /public/v1/spotlight/queries endpoint with support for get-by-id and collection retrieval operations
  • Exposed the new queries service from the Spotlight and AsyncSpotlight modules via .queries properties
  • Added end-to-end tests for synchronous and asynchronous query operations, including scenarios for retrieving queries by ID, handling invalid IDs, listing all queries, and filtering with RQL
  • Added unit tests for the new queries resource validating mixin implementations and model field mapping
  • Updated existing spotlight unit tests to exercise the new queries surface
  • Updated e2e_config.test.json with spotlight query ID configuration

AI Generated.
Add a dedicated queries module for spotlight with full sync and async endpoint coverage. Rename existing spotlight e2e test files from test_*_spotlight to test_*_object for consistency, and add query-specific e2e tests under tests/e2e/spotlight/query/. Update unit tests to cover the new queries resource and extend the existing spotlight unit suite.
@robcsegal robcsegal requested a review from a team as a code owner April 23, 2026 15:17
@coderabbitai

coderabbitai Bot commented Apr 23, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request introduces a new Spotlight "queries" resource layer to the MPT API Python client. It adds a SpotlightQuery model with synchronous and asynchronous service classes wired to the /public/v1/spotlight/queries endpoint, integrates the new queries service into the Spotlight module, updates the e2e configuration with a query ID, and provides comprehensive unit and e2e test coverage.

Changes

Cohort / File(s) Summary
Configuration
e2e_config.test.json
Adds spotlight.query.id identifier entry and updates JSON formatting with trailing comma.
Service Implementation
mpt_api_client/resources/spotlight/queries.py
Defines SpotlightQuery model and sync/async service classes (SpotlightQueriesService, AsyncSpotlightQueriesService) with get-by-id and collection retrieval mixins targeting /public/v1/spotlight/queries endpoint.
Module Integration
mpt_api_client/resources/spotlight/spotlight.py
Exposes .queries property accessors on both Spotlight and AsyncSpotlight classes to instantiate corresponding query services.
E2E Test Fixtures
tests/e2e/spotlight/query/conftest.py
Introduces pytest fixtures for configured spotlight query ID and invalid query ID placeholder for test scenarios.
E2E Tests
tests/e2e/spotlight/query/test_sync_query.py, tests/e2e/spotlight/query/test_async_query.py
Implements four test scenarios each for sync and async operations: get by valid ID, error handling for invalid ID, paginated listing, and RQL-filtered queries with field selection.
Unit Tests
tests/unit/resources/spotlight/test_queries.py, tests/unit/resources/spotlight/test_spotlight.py
Validates service instantiation, mixin implementation, model field mapping, and property exposure on Spotlight/AsyncSpotlight classes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • PR #315: Extends Spotlight resource by adding subresource service properties to the same Spotlight/AsyncSpotlight classes, following the same integration pattern as this PR's .queries property addition.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Jira Issue Key In Title ✅ Passed PR title contains exactly one Jira issue key in the required format (MPT-XXXX): MPT-20430.
Test Coverage Required ✅ Passed PR modifies 2 code files in mpt_api_client/resources/spotlight/ with comprehensive test coverage including 5 test files covering unit and end-to-end tests.
Single Commit Required ✅ Passed The pull request contains exactly one commit (ed9d7f8), satisfying the requirement for a clean git history.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@robcsegal robcsegal changed the title MPT-20430 add endpoints and e2e tests for spotlight queries MPT-20430: add endpoints and e2e tests for spotlight queries Apr 23, 2026
@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
tests/e2e/spotlight/query/test_sync_query.py (1)

34-36: Strengthen filter test by asserting the returned query ID.

At Line 36, asserting only len(result) == 1 is weak; add an identity assertion to verify the filter actually matched the requested query.

Suggested improvement
     result = list(filtered_spotlight_queries.iterate())
 
     assert len(result) == 1
+    assert result[0].id == spotlight_query_id
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/e2e/spotlight/query/test_sync_query.py` around lines 34 - 36, The test
currently only checks the count of results from
filtered_spotlight_queries.iterate(); strengthen it by also asserting the
identity of the returned query: after collecting result =
list(filtered_spotlight_queries.iterate()), add an assertion that the single
returned item's id equals the expected query id (e.g. assert result[0].id ==
expected_query.id or assert result[0]["id"] == expected_query_id depending on
how query objects are represented) to ensure the filter matched the intended
query.
tests/e2e/spotlight/query/test_async_query.py (1)

34-36: Add ID assertion to harden async filter validation.

At Line 36, len(result) == 1 does not prove the filter matched the expected query; assert the returned ID as well.

Suggested improvement
     result = [query async for query in filtered_spotlight_queries.iterate()]
 
     assert len(result) == 1
+    assert result[0].id == spotlight_query_id
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/e2e/spotlight/query/test_async_query.py` around lines 34 - 36, The test
currently only checks len(result) == 1 after calling
filtered_spotlight_queries.iterate(), but doesn't verify the matched record;
update the assertion to also check the returned query's ID (e.g., assert
result[0].id == expected_query.id or assert result[0]["id"] == expected_id) so
the async filter actually returned the expected query; use the same expected
identifier set up earlier in the test (expected_query or expected_id) and
reference result[0] from the list produced by
filtered_spotlight_queries.iterate().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@tests/e2e/spotlight/query/test_async_query.py`:
- Around line 34-36: The test currently only checks len(result) == 1 after
calling filtered_spotlight_queries.iterate(), but doesn't verify the matched
record; update the assertion to also check the returned query's ID (e.g., assert
result[0].id == expected_query.id or assert result[0]["id"] == expected_id) so
the async filter actually returned the expected query; use the same expected
identifier set up earlier in the test (expected_query or expected_id) and
reference result[0] from the list produced by
filtered_spotlight_queries.iterate().

In `@tests/e2e/spotlight/query/test_sync_query.py`:
- Around line 34-36: The test currently only checks the count of results from
filtered_spotlight_queries.iterate(); strengthen it by also asserting the
identity of the returned query: after collecting result =
list(filtered_spotlight_queries.iterate()), add an assertion that the single
returned item's id equals the expected query id (e.g. assert result[0].id ==
expected_query.id or assert result[0]["id"] == expected_query_id depending on
how query objects are represented) to ensure the filter matched the intended
query.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: d063f1fb-25be-40cc-a9d9-769fc1d5508e

📥 Commits

Reviewing files that changed from the base of the PR and between 5c70074 and ed9d7f8.

📒 Files selected for processing (10)
  • e2e_config.test.json
  • mpt_api_client/resources/spotlight/queries.py
  • mpt_api_client/resources/spotlight/spotlight.py
  • tests/e2e/spotlight/query/conftest.py
  • tests/e2e/spotlight/query/test_async_query.py
  • tests/e2e/spotlight/query/test_sync_query.py
  • tests/e2e/spotlight/test_async_object.py
  • tests/e2e/spotlight/test_sync_object.py
  • tests/unit/resources/spotlight/test_queries.py
  • tests/unit/resources/spotlight/test_spotlight.py

@d3rky d3rky merged commit 4f6bdeb into main Apr 24, 2026
4 checks passed
@d3rky d3rky deleted the MPT-20430-add-endpoints-and-e-2-e-tests-for-spotlight-queries branch April 24, 2026 07:14
d3rky added a commit that referenced this pull request May 26, 2026
Bumps the python-development group with 3 updates:
[pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures),
[responses](https://github.com/getsentry/responses) and
[ruff](https://github.com/astral-sh/ruff).

Updates `pytest-rerunfailures` from 16.2 to 16.3
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst">pytest-rerunfailures's
changelog</a>.</em></p>
<blockquote>
<h2>16.3 (2026-05-22)</h2>
<p>Features
++++++++</p>
<ul>
<li>
<p>Add <code>--reruns-mode</code> option (<code>strict</code> or
<code>append</code>). With <code>append</code>,
marker reruns and the global <code>--reruns</code> / <code>reruns</code>
ini setting are summed
instead of the marker taking strict priority. Default is
<code>strict</code> so
existing behaviour is unchanged.
Fixes
<code>[#321](pytest-dev/pytest-rerunfailures#321)
&lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/321&gt;</code>_.</p>
</li>
<li>
<p>Add <code>--rerun-show-tracebacks</code> option to display tracebacks
from failed
attempts that were retried, including tests that eventually passed. The
rerun summary section is emitted automatically when the flag is set, so
<code>-rR</code> is no longer required to see the tracebacks.
Fixes
<code>[#156](pytest-dev/pytest-rerunfailures#156)
&lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/156&gt;</code>_.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-rerunfailures/commit/4b3a2200b07b357cecfe192f4997f35764869c6f"><code>4b3a220</code></a>
Preparing release 16.3</li>
<li><a
href="https://github.com/pytest-dev/pytest-rerunfailures/commit/d17f3be1c8cc257c29cd7d7e815d3c52867b1276"><code>d17f3be</code></a>
feat: add --reruns-mode option to sum marker and global reruns (<a
href="https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/321">#321</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/328">#328</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-rerunfailures/commit/4a00facae37246c00801390039286d322df6e322"><code>4a00fac</code></a>
Add --rerun-show-tracebacks to surface retried failures (<a
href="https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/329">#329</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-rerunfailures/commit/9f792d9efe6bf0218e7ba2734257af2d5165ca3f"><code>9f792d9</code></a>
Back to development: 16.3</li>
<li>See full diff in <a
href="https://github.com/pytest-dev/pytest-rerunfailures/compare/16.2...16.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `responses` from 0.26.0 to 0.26.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/responses/releases">responses's
releases</a>.</em></p>
<blockquote>
<h2>0.26.1</h2>
<ul>
<li>Added Spanish translation of the README
(<code>README.es.rst</code>)</li>
<li>When both <code>content_type</code> and
<code>headers['content-type']</code> are in a response mock file,
<code>content_type</code> is now used.</li>
<li>Added strict_match to urlencoded_params_matcher, enabling partial
request parameter
matching.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/responses/blob/master/CHANGES">responses's
changelog</a>.</em></p>
<blockquote>
<h2>0.26.1</h2>
<ul>
<li>Added Spanish translation of the README
(<code>README.es.rst</code>)</li>
<li>When both <code>content_type</code> and
<code>headers['content-type']</code> are in a response mock file,
<code>content_type</code> is now used.</li>
<li>Added strict_match to urlencoded_params_matcher, enabling partial
request parameter
matching.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/getsentry/responses/commit/7a80232a3716cadde4b0aa36b34cc56006366179"><code>7a80232</code></a>
release: 0.26.1</li>
<li><a
href="https://github.com/getsentry/responses/commit/1fda8978e1c927706f82c1baafe30d9c013972ca"><code>1fda897</code></a>
Add strict_match parameter to urlencoded_params_matcher (<a
href="https://redirect.github.com/getsentry/responses/issues/796">#796</a>)</li>
<li><a
href="https://github.com/getsentry/responses/commit/ab8d4808bf973aa968757755bf9ea38621a4d070"><code>ab8d480</code></a>
chore: Fix lint build and update changes (<a
href="https://redirect.github.com/getsentry/responses/issues/795">#795</a>)</li>
<li><a
href="https://github.com/getsentry/responses/commit/71be9a2f9718f0f4d5c3feb28ba7e3797b7bdfc0"><code>71be9a2</code></a>
fix: remove content-type from headers in _add_from_file to avoid
RuntimeError...</li>
<li><a
href="https://github.com/getsentry/responses/commit/84c2b081402f61eaf25ef9b27b0bc425bb48479e"><code>84c2b08</code></a>
Add Spanish translation of the README documentation (<a
href="https://redirect.github.com/getsentry/responses/issues/790">#790</a>)</li>
<li><a
href="https://github.com/getsentry/responses/commit/3da192e3253c57eb69bc9b46d09154e37abcd8aa"><code>3da192e</code></a>
chore: pin GitHub Actions to full-length commit SHAs (<a
href="https://redirect.github.com/getsentry/responses/issues/789">#789</a>)</li>
<li><a
href="https://github.com/getsentry/responses/commit/cc53d778e2adf7a060f1eb04bc5c107d49d4d1a9"><code>cc53d77</code></a>
Merge branch 'release/0.26.0'</li>
<li>See full diff in <a
href="https://github.com/getsentry/responses/compare/0.26.0...0.26.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.15.13 to 0.15.14
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.14</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-21.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Implement
<code>airflow-task-implicit-multiple-outputs</code>
(<code>AIR202</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25152">#25152</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Mark <code>PTH101</code> fix as
unsafe when first argument is a class attribute annotated as
<code>int</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25086">#25086</a>)</li>
<li>[<code>pylint</code>] Implement <code>too-many-try-statements</code>
(<code>W0717</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23970">#23970</a>)</li>
<li>[<code>ruff</code>] Add <code>incorrect-decorator-order</code>
(<code>RUF074</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23461">#23461</a>)</li>
<li>[<code>ruff</code>] Add <code>fallible-context-manager</code>
(<code>RUF075</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22844">#22844</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix lambda formatting in interpolated string expressions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25144">#25144</a>)</li>
<li>Treat generic <code>frozenset</code> annotations as immutable (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25251">#25251</a>)</li>
<li>[<code>flake8-type-checking</code>] Avoid <code>strict</code>
behavior when <code>future-annotations</code> are enabled
(<code>TC001</code>, <code>TC002</code>, <code>TC003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25035">#25035</a>)</li>
<li>[<code>pylint</code>] Avoid false positives in <code>else</code>
clause (<code>PLR1733</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25177">#25177</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-comprehensions</code>] Skip <code>C417</code> for
lambdas with positional-only parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25272">#25272</a>)</li>
<li>[<code>flake8-simplify</code>] Preserve f-string source verbatim in
<code>SIM101</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25061">#25061</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid unnecessary parser lookahead for operators (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25290">#25290</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Update code example setting Neovim LSP log level (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25284">#25284</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Add full PEP 798 support (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25104">#25104</a>)</li>
<li>Add a parser recursion limit (<a
href="https://redirect.github.com/astral-sh/ruff/pull/24810">#24810</a>)</li>
<li>Update various <code>ruff_python_stdlib</code> APIs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25273">#25273</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/ocaballeror"><code>@​ocaballeror</code></a></li>
<li><a
href="https://github.com/lerebear"><code>@​lerebear</code></a></li>
<li><a
href="https://github.com/samuelcolvin"><code>@​samuelcolvin</code></a></li>
<li><a
href="https://github.com/baltasarblanco"><code>@​baltasarblanco</code></a></li>
<li><a
href="https://github.com/aconal-com"><code>@​aconal-com</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.14</h2>
<p>Released on 2026-05-21.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Implement
<code>airflow-task-implicit-multiple-outputs</code>
(<code>AIR202</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25152">#25152</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Mark <code>PTH101</code> fix as
unsafe when first argument is a class attribute annotated as
<code>int</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25086">#25086</a>)</li>
<li>[<code>pylint</code>] Implement <code>too-many-try-statements</code>
(<code>W0717</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23970">#23970</a>)</li>
<li>[<code>ruff</code>] Add <code>incorrect-decorator-order</code>
(<code>RUF074</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23461">#23461</a>)</li>
<li>[<code>ruff</code>] Add <code>fallible-context-manager</code>
(<code>RUF075</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22844">#22844</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix lambda formatting in interpolated string expressions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25144">#25144</a>)</li>
<li>Treat generic <code>frozenset</code> annotations as immutable (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25251">#25251</a>)</li>
<li>[<code>flake8-type-checking</code>] Avoid <code>strict</code>
behavior when <code>future-annotations</code> are enabled
(<code>TC001</code>, <code>TC002</code>, <code>TC003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25035">#25035</a>)</li>
<li>[<code>pylint</code>] Avoid false positives in <code>else</code>
clause (<code>PLR1733</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25177">#25177</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-comprehensions</code>] Skip <code>C417</code> for
lambdas with positional-only parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25272">#25272</a>)</li>
<li>[<code>flake8-simplify</code>] Preserve f-string source verbatim in
<code>SIM101</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25061">#25061</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid unnecessary parser lookahead for operators (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25290">#25290</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Update code example setting Neovim LSP log level (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25284">#25284</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Add full PEP 798 support (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25104">#25104</a>)</li>
<li>Add a parser recursion limit (<a
href="https://redirect.github.com/astral-sh/ruff/pull/24810">#24810</a>)</li>
<li>Update various <code>ruff_python_stdlib</code> APIs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25273">#25273</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/ocaballeror"><code>@​ocaballeror</code></a></li>
<li><a
href="https://github.com/lerebear"><code>@​lerebear</code></a></li>
<li><a
href="https://github.com/samuelcolvin"><code>@​samuelcolvin</code></a></li>
<li><a
href="https://github.com/baltasarblanco"><code>@​baltasarblanco</code></a></li>
<li><a
href="https://github.com/aconal-com"><code>@​aconal-com</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf"><code>9ad2da3</code></a>
Bump 0.15.14 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25295">#25295</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594"><code>c714e84</code></a>
[ty] Modernize setup of union types in mdtests (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25291">#25291</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad"><code>8a8e35e</code></a>
[<code>flake8-comprehensions</code>] Skip <code>C417</code> for lambdas
with positional-only parame...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f"><code>aea5ed4</code></a>
Avoid unnecessary parser lookahead for operators (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25290">#25290</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff"><code>e9d72bb</code></a>
[ty] Allow enum member accesses on <code>self</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25077">#25077</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672"><code>6cbd59b</code></a>
Set <code>exclude-newer = &quot;7 days&quot;</code> in our PEP-723
scripts (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25285">#25285</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076"><code>9999a39</code></a>
Update code example on how to update Neovim LSP log level (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25284">#25284</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178"><code>67d8c54</code></a>
[ty] Retain recursively-defined state in binary expressions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25277">#25277</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261"><code>25a3191</code></a>
[ty] Refine Callable class-decorator fallback for unknown results (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25250">#25250</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9"><code>c423054</code></a>
Add a recursion limit to the parser (<a
href="https://redirect.github.com/astral-sh/ruff/issues/24810">#24810</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.15.13...0.15.14">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants